import { toLogin } from "@/router";
import axios from "axios";

// 创建一个新的axios实例对象
const instance = axios.create({
    // 基础路径
    baseURL: import.meta.env.VITE_BASE_URL,
    timeout: 5000
})


// 请求拦截器：请求从前端发往后端的过程中，被拦截下来
instance.interceptors.request.use((config) => {
    // 将本地存储中的token取出来，添加到所有请求的headers（请求头）中
    config.headers.Authorization = localStorage.admin_token;
    return config;
})


// 响应拦截器
instance.interceptors.response.use((res) => {
    // 响应成功时，处理数据格式
    return res.data;
}, (err) => {
    // 响应失败
    if (err?.response?.status == 401) {
        ElMessageBox.alert('登录已过期，请重新登录。', '提示', {
            confirmButtonText: '确认',
            callback: () => {
                toLogin();
            },
        })
    } else if (err?.response?.status == 500) {
        ElMessage.error('服务器出错，请稍后重试。');
    }
    return Promise.reject(err.message);
})


// 将私有的instance暴露出去，供其他文件引入使用
export default instance;






